iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 4
0

Interrupt是什麼?它代表的意義就是它可以改變CPU執行的flow,也就是說當CPU在執行一個program的時候,可以透過interrupt隨時把它打斷,去執行另一個程式。
https://ithelp.ithome.com.tw/upload/images/20181006/20111939RL5ZEhke7f.png
有了interrupt之後,我們希望看到的結果是本來程式在執行時,同時I/O也在執行,所以可以看到上面在busy,下面在data transfer,可是當transfer結束時,buffer滿了,填滿之後就要搬到memory,這時候CPU就要involve進來了,因為memory是由CPU在control的,所以這時候它需要CPU的協助,它就會發出interrupt的指令把CPU正在執行的程式打斷,切換到要負責處理I/O的那一個routine程式,去處理搬運資料這件事,搬完後,interrupt也會跟著結束,CPU就回去執行原來的那個程式。

也就是說CPU可以做自己的事情沒有關係,但是當有需要OS做事情時,它可以隨時把它從使用者的program切換到OS的program讓OS去做現在比較急迫要去做的事情,做完之後,它還可以return回原來的狀態,去執行原來的程式,而不會把它整個cancel掉。

用這樣的方式,才可以看見在做I/O的過程中,I/O就做I/O,CPU做使用者當時需要做計算的程式,在需要時,透過interrupt隨時做一個切換,讓CPU跟I/O可以同時運作。

所以I/O通常會使用interrupt的方式而不是busy waiting的方式,今天user要output一個很大的檔案,它在call OS後會走到OS的最底層,也就是device driver,那因為user透過interrupt I/O開始執行這件事,所以這個driver知道要透過interrupt的方式,它就會initial interrupt I/O的動作。


上一篇
第三天 Multi-programming
下一篇
第五天 Interrupt-2
系列文
30天~作業系統學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言